const express = require("express")
const admin = require("../../../db/admin")
const router = express.Router()
const adminDB = require("../../../db/admin")
const userDB = require("../../../db/user")

// 检测是否登录
router.post("/check",async(req,res)=>{
  try {
   if(!req.session.userInfo){
     return res.send({
       code:2,
       mes:"用户未登录"
     })
   }
   // 更新数据
   let doc = await adminDB.findById(req.session.userInfo._id)
   // 判断是否密码更改
   if(doc.pass !== req.session.userInfo.pass){
     return res.send({
       code:4,
       mes:"密码已经更改,请重新登录"
     })
   }
   // 更新session
   req.session.userInfo = doc
   // 更新vuex
   let userInfoVuex = {
     _id:doc._id,
     name:doc.name,
     phone:doc.phone,
     date:doc.date,
     __v:doc.__v
   }
   res.send({
     code:0,
     mes:"管理员,欢迎回来",
     data:userInfoVuex
   })
  } catch (error) {
    res.send({
      code:"5",
      mes:"服务器异常,请稍后再试"
    })
  }
 })
 
 // 退出登录
 router.post("/exit",async(req,res)=>{
   try {
     if(!req.session.userInfo) {
       return res.send({
         code:6,
         mes:"已退出登录"
       })
     }
     req.session.destroy()
     res.send({
       code:0,
       mes:"已退出登录"
     })
   } catch (error) {
     res.send({
       code:"5",
       mes:"服务器异常,请稍后再试"
     })
   }
 })
 
 // 获取管理员
 router.get("/getAll",async(req,res)=>{
   try {
     let doc = await adminDB.find()
     res.send({
       code:0,
       mes:"管理员信息列表",
       data:doc,
       supertube:req.session.userInfo.Supertube
     })
   } catch (error) {
     res.send({
       code:5,
       mes:"服务器异常，请稍后再试"
     })
   }
 })

 // 获取用户
 router.get("/getUser",async(req,res)=>{
   try {
     let doc = await userDB.find()
     res.send({
       code:0,
       mes:"用户信息",
       data:doc
     })
   } catch (error) {
     res.send({
       code:5,
       mes:"服务器异常，请稍后再试"
     })
   }
 })
 
// 权限判断
router.use((req,res,next)=>{
  if(!req.session.userInfo.Supertube){
    return res.send({
      code:15,
      mes:"您不是超级管理员，没有添加管理员权限"
    })
  }
  next()
})
 

// 添加管理员
router.post("/reg",async(req,res)=>{
  try {
    let {name,pass,allowDelete,allowPublish,allowUpdate} = req.body
    // 判断是否存在
    let doc = await adminDB.findOne({name})
    if(doc){
      return res.send({
        code:7,
        mes:"该管理员已存在"
      })
    }
    if(!name.trim()){
      return res.send({
        code:11,
        mes:"用户名格式有误"
      })
    }
    if(!pass.trim()){
      return res.send({
        code:12,
        mes:"密码格式有误"
      })
    }
    await adminDB.create({
      name,pass,allowDelete,allowPublish,allowUpdate
    })
    res.send({
      code:0,
      mes:"管理员添加成功"
    })
  } catch (error) {
    res.send({
      code:5,
      mes:"服务器异常，请稍后再试"
    })
  }
})

module.exports = router